Advances in technology have resulted in smaller and more powerful computing devices. For example, there currently exist a variety of portable personal computing devices, including wireless computing devices, such as portable wireless telephones, personal digital assistants (PDAs), and paging devices that are small, lightweight, and easily carried by users. More specifically, portable wireless telephones, such as cellular telephones and Internet Protocol (IP) telephones, can communicate voice and data packets over wireless networks. Many such wireless telephones incorporate additional devices to provide enhanced functionality for end users. For example, a wireless telephone can also include a digital still camera, a digital video camera, a digital recorder, and an audio file player. Also, such wireless telephones can execute software applications, such as a web browser application that can be used to access the Internet. As such, these wireless telephones can include significant computing capabilities.
Devices such as wireless telephones often communicate using a wireless network. Communication via a wireless network typically involves a first device called an “originator” transmitting a message to a second device called a “recipient.” The recipient then transmits an acknowledgement (ACK) to the originator indicating that the message was successfully received. If a recipient sends an ACK for every successfully received packet, the ACKs may congest the wireless network, especially when the recipient receives a large number of packets within a short period of time. To reduce overhead and medium occupancy due to ACKs, some wireless networks support a block ACK (BA). Instead of sending ACKs for every received packet of a packet stream, a recipient can instead send a single BA indicating that multiple packets of the packet stream were received successfully.
However, sending a BA even if all packets were received successfully may be inefficient. Moreover, current BA mechanisms involve the recipient sending a constant size (e.g., 8-byte) bitmap to the originator, where the bitmap indicates whether each packet in the packet stream was received successfully. In situations where only a few packets were erroneous, the use of a constant size bitmap may add overhead.